Jak vytvorit novy TEdit na pozici kurzoru?

Otázka od: JiriKrakora@skh.cz

25. 9. 2002 15:17

Dobry den,

Mam Form1 a na nem onMouseDown event s nasledujicim kodem:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Edit: TEdit;
begin
    Edit := TEdit.Create(self);
    try
      Edit.Visible := True;
      Edit.Color := clRed;
      Edit.Enabled := True;
      Edit.Name := 'TEST';
      Edit.BorderStyle := bsSingle;
      Edit.Width := 20;
      Edit.Height := 5;
      Edit.Left := x;
      Edit.Top := y;
      Edit.Show;
      showmessage('Jsem uvnitr a vytvarim Edit');
    finally

    end;
end;


Predpokladal jsem, ze to bude fungovat, ale nefunguje. Muj TEdit to sice
vytvori (to poznam podle jmena), ale ja ho nevidim. Kdyz jsem pouzil
Edit.Showing tak mi to vratilo False. Zkousel jsem i Edit.BringToFront ,
nebo Edit.ClientToScreen , ale porad se mi ta komponenta nezobrazuje.
Nefunguje to ani kdyz nepouziji try...finally prikaz. Uz nad tim sedim
druhy den a porad nemuzu prijit na pricinu.

Zkouseli jsme to s kolegou v praci na WIN2000 a Delphi 6 i Delphi 7.
Prosim o radu.

Dekuji, Jiri Krakora.

Odpovedá: Lebeda David

25. 9. 2002 18:55

> Predpokladal jsem, ze to bude fungovat, ale nefunguje. Muj TEdit to
> sice vytvori (to poznam podle jmena), ale ja ho nevidim.

Musis nastavit Parent na prvek, na nemz Edit lezi.
Tedy Edit.Parent := Self, jde-li o form.

David Lebeda

Odpovedá: JiriKrakora@skh.cz

25. 9. 2002 15:39

1. "Self" znamena vzdycky Form?
2. Parent je TImage, ale v pripade Edit.Parent := Image1; to hodi chybu
"Incompatible types: 'TWinControl' and 'TImage'" Kdyz vsak pod Image1
podlozim TPanel, tak Edit.Parent := Panel1; uz funguje. Cim to je?




> Predpokladal jsem, ze to bude fungovat, ale nefunguje. Muj TEdit to
> sice vytvori (to poznam podle jmena), ale ja ho nevidim.

Musis nastavit Parent na prvek, na nemz Edit lezi.
Tedy Edit.Parent := Self, jde-li o form.

David Lebeda

Odpovedá: Petr Brant

25. 9. 2002 19:22

Musis nastavit Edit.Parent:= self

RNDr. Petr Brant [brant@dcomm.cz]
D&COMM s.r.o.
Korunovační 6
Praha 7
tel. +420724007234


From: JiriKrakora@skh.cz [mailto:JiriKrakora@skh.cz]
Subject: Jak vytvorit novy TEdit na pozici kurzoru?



Mam Form1 a na nem onMouseDown event s nasledujicim kodem:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Edit: TEdit;
begin
    Edit := TEdit.Create(self);
    try
      Edit.Visible := True;
      Edit.Color := clRed;
      Edit.Enabled := True;
      Edit.Name := 'TEST';
      Edit.BorderStyle := bsSingle;
      Edit.Width := 20;
      Edit.Height := 5;
      Edit.Left := x;
      Edit.Top := y;
      Edit.Show;
      showmessage('Jsem uvnitr a vytvarim Edit');
    finally

    end;
end;


Predpokladal jsem, ze to bude fungovat, ale nefunguje. Muj TEdit to sice
vytvori (to poznam podle jmena), ale ja ho nevidim. Kdyz jsem pouzil
Edit.Showing tak mi to vratilo False. Zkousel jsem i Edit.BringToFront ,
nebo Edit.ClientToScreen , ale porad se mi ta komponenta nezobrazuje.
Nefunguje to ani kdyz nepouziji try...finally prikaz. Uz nad tim sedim druhy
den a porad nemuzu prijit na pricinu.

Odpovedá: Lebeda David

25. 9. 2002 16:54

> 1. "Self" znamena vzdycky Form?

Ne. Self je trida, do niz patri metoda, jiz upravujes. V klasickych pripadech
to
obvykle bude form, ale pokud budes mit v jedne unite vice trid, tak je to vzdy
to
odpovidajici.

> 2. Parent je TImage

Aha, takhle ne, musi to byt komponenta, ktera ma kontejnerovy charakter, tj.
pokud ji
posunes, posunou se i prvky, ktere v ni lezi. Napr. Form, panel apod.

Je treba rozlisovat pojmy Owner a Parent. Owner se stara o uvolneni vsech
vlastnenych komponent, Parent resi vykreslovani.

David Lebeda

Odpovedá: Libor Junek, KSH-Data

25. 9. 2002 19:31

Nemas nastaven parent:
Edit.Parent := Self;

Libor

-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of JiriKrakora@skh.cz

Predpokladal jsem, ze to bude fungovat, ale nefunguje. Muj TEdit to sice
vytvori (to poznam podle jmena), ale ja ho nevidim. Kdyz jsem pouzil
Edit.Showing tak mi to vratilo False. Zkousel jsem i Edit.BringToFront ,
nebo Edit.ClientToScreen , ale porad se mi ta komponenta nezobrazuje.
Nefunguje to ani kdyz nepouziji try...finally prikaz. Uz nad tim sedim druhy
den a porad nemuzu prijit na pricinu.

Zkouseli jsme to s kolegou v praci na WIN2000 a Delphi 6 i Delphi 7. Prosim
o radu.

Odpovedá: Jan Sebelík

25. 9. 2002 20:05

> Odesílatel: JiriKrakora@skh.cz

    Edit := TEdit.Create(self);
    try
// Edit.Name := 'TEST'; tohle spadne napodruhe kvuli duplicitnimu jmenu
// Name se nastavovat nemusi
      Edit.BorderStyle := bsSingle;
      Edit.Width := 20;
      Edit.Height := 5; // tohle asi nepujde
      Edit.Left := x;
      Edit.Top := y;
      Edit.Parent:=self;
// Parent muze byt libovolny kontejner odvozeny od TWinControl, treba TPanel,
...
    except
      Edit.Free;
    end;

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================

Predpokladal jsem, ze to bude fungovat, ale nefunguje. Muj TEdit to sice
vytvori (to poznam podle jmena), ale ja ho nevidim. Kdyz jsem pouzil
Edit.Showing tak mi to vratilo False. Zkousel jsem i Edit.BringToFront ,
nebo Edit.ClientToScreen , ale porad se mi ta komponenta nezobrazuje.
Nefunguje to ani kdyz nepouziji try...finally prikaz. Uz nad tim sedim
druhy den a porad nemuzu prijit na pricinu.

Zkouseli jsme to s kolegou v praci na WIN2000 a Delphi 6 i Delphi 7.
Prosim o radu.

Dekuji, Jiri Krakora.

Odpovedá: Pavel ZIDEK

26. 9. 2002 4:07

Chybi ti
Edit.Parent := Form1

----- Pavel ZIDEK -----


  Mam Form1 a na nem onMouseDown event s nasledujicim kodem:

  procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
  var
    Edit: TEdit;
  begin
      Edit := TEdit.Create(self);
      try
        Edit.Visible := True;
        Edit.Color := clRed;
        Edit.Enabled := True;
        Edit.Name := 'TEST';
        Edit.BorderStyle := bsSingle;
        Edit.Width := 20;
        Edit.Height := 5;
        Edit.Left := x;
        Edit.Top := y;
        Edit.Show;
        showmessage('Jsem uvnitr a vytvarim Edit');
      finally

      end;
  end;


  Predpokladal jsem, ze to bude fungovat, ale nefunguje. Muj TEdit to sice
vytvori (to poznam podle jmena), ale ja ho nevidim. Kdyz jsem pouzil
Edit.Showing tak mi to vratilo False. Zkousel jsem i Edit.BringToFront , nebo
Edit.ClientToScreen , ale porad se mi ta komponenta nezobrazuje. Nefunguje to
ani kdyz nepouziji try...finally prikaz. Uz nad tim sedim druhy den a porad
nemuzu prijit na pricinu.

  Zkouseli jsme to s kolegou v praci na WIN2000 a Delphi 6 i Delphi 7. Prosim o
radu.

  Dekuji, Jiri Krakora.

Odpovedá: Piskac Josef

26. 9. 2002 6:24

On 25 Sep 2002 at 13:12, JiriKrakora@skh.cz wrote:

> Mam Form1 a na nem onMouseDown event s nasledujicim kodem:
>
> procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
> Shift: TShiftState; X, Y: Integer);
> var
> Edit: TEdit;
> begin
> Edit := TEdit.Create(self);
> try

         Edit.Parent := Self; // Toto Ti tam chybi, pak se uz objevi.

> Edit.Visible := True;
> Edit.Color := clRed;
> Edit.Enabled := True;
> Edit.Name := 'TEST';
> Edit.BorderStyle := bsSingle;
> Edit.Width := 20;
> Edit.Height := 5;
> Edit.Left := x;
> Edit.Top := y;
> Edit.Show;
> showmessage('Jsem uvnitr a vytvarim Edit');
> finally
>
> end;
> end;
>

Pepa

Odpovedá: Jirí Göth

27. 9. 2002 7:51

Ahoj,
abych prispel se svou troskou do mlyna (pokud jiz to funguje, tak to je asi
zcestna myslenka).
Na tom formu zavolej metodu InsertControl( Edit). Tato metoda by mela vlozit
editacni policko na formular.

Jiri Goth
----- Puvodní zpráva -----
Od: JiriKrakora@skh.cz
Komu: delphi-l@clexpert.cz
Odesláno: 25. zárí 2002 13:12
Predmet: Jak vytvorit novy TEdit na pozici kurzoru?



Dobry den,

Mam Form1 a na nem onMouseDown event s nasledujicim kodem:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Edit: TEdit;
begin
    Edit := TEdit.Create(self);
    try
      Edit.Visible := True;
      Edit.Color := clRed;
      Edit.Enabled := True;
      Edit.Name := 'TEST';
      Edit.BorderStyle := bsSingle;
      Edit.Width := 20;
      Edit.Height := 5;
      Edit.Left := x;
      Edit.Top := y;
      Edit.Show;
      showmessage('Jsem uvnitr a vytvarim Edit');
    finally

    end;
end;


Predpokladal jsem, ze to bude fungovat, ale nefunguje. Muj TEdit to sice
vytvori (to poznam podle jmena), ale ja ho nevidim. Kdyz jsem pouzil
Edit.Showing tak mi to vratilo False. Zkousel jsem i Edit.BringToFront ,
nebo Edit.ClientToScreen , ale porad se mi ta komponenta nezobrazuje.
Nefunguje to ani kdyz nepouziji try...finally prikaz. Uz nad tim sedim druhy
den a porad nemuzu prijit na pricinu.

Zkouseli jsme to s kolegou v praci na WIN2000 a Delphi 6 i Delphi 7. Prosim
o radu.

Dekuji, Jiri Krakora.


Odpovedá: Zdenek Brejsa

27. 9. 2002 8:11

Musis nastavit Edit.Parent := Self nebo nejaky panel, proste musis urcit na
cem se ma ten edit zobrazit

> Mam Form1 a na nem onMouseDown event s nasledujicim kodem:
>
> procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
> Shift: TShiftState; X, Y: Integer);
> var
> Edit: TEdit;
> begin
> Edit := TEdit.Create(self);
> try
> Edit.Visible := True;
> Edit.Color := clRed;
> Edit.Enabled := True;
> Edit.Name := 'TEST';
> Edit.BorderStyle := bsSingle;
> Edit.Width := 20;
> Edit.Height := 5;
> Edit.Left := x;
> Edit.Top := y;
> Edit.Show;
> showmessage('Jsem uvnitr a vytvarim Edit');
> finally
>
> end;
> end;
>
>
> Predpokladal jsem, ze to bude fungovat, ale nefunguje. Muj TEdit to sice
> vytvori (to poznam podle jmena), ale ja ho nevidim.

Odpovedá: Jan Sebelík

27. 9. 2002 12:54

> Odesílatel: Jirí Göth <jiri_goth@gordic.cz>
> Na tom formu zavolej metodu InsertControl( Edit). Tato metoda by mela vlozit
> editacni policko na formular.

Panel.InsertControl(Edit)
je totez jako
Edit.Parent:=Panel

Co je lépe citelne?

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================